using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using PackTracker.Business;

namespace PackTracker.UserControls
{
	public partial class MonitoramentoEditar : UserControl
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				monitoramentoForm.DefaultMode = getMonitoramento().IsNew ? FormViewMode.Edit : FormViewMode.ReadOnly;
				ApplyAuthorizationRules();
			}
		}

		#region Metodos privados

		private void ApplyAuthorizationRules()
		{
			//monitoramentoButton.Visible = PackTracker.Business.Monitoramento.CanAddObject();
		}

		private void setMonitoramento(Monitoramento monitoramento, bool salvar)
		{
			if (salvar)
			{
				monitoramento = monitoramento.Save();
				ViewState["Monitoramento"] = Monitoramento.GetMonitoramento(monitoramento.Id);
			}
			else
			{
				ViewState["Monitoramento"] = monitoramento;
			}
		}

		protected Monitoramento getMonitoramento()
		{
			int monitoramentoId = 0;
			Monitoramento monitoramento = ViewState["Monitoramento"] as Monitoramento;

			if (monitoramento == null)
			{
				if (!String.IsNullOrEmpty(Request.QueryString["MonitoramentoId"]))
					int.TryParse(Request.QueryString["MonitoramentoId"].ToString(), out monitoramentoId);

				monitoramento = (monitoramentoId == 0) ? Monitoramento.NewMonitoramento() : Monitoramento.GetMonitoramento(monitoramentoId);
				ViewState.Add("Monitoramento", monitoramento);
			}
			return monitoramento;
		}

		#endregion

		#region MonitoramentoForm

		protected void monitoramentoForm_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
		{
			Monitoramento monitoramento = getMonitoramento();
			Csla.Data.DataMapper.Map(e.NewValues, monitoramento, "Id");
			setMonitoramento(monitoramento, true);
			
			monitoramentoForm.DefaultMode = FormViewMode.ReadOnly;
            monitoramentoForm.DataBind();
		}
		
        protected void monitoramentoForm_ItemCommand(object sender, FormViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Cancel":
                    monitoramentoForm.DefaultMode = FormViewMode.ReadOnly;
                    monitoramentoForm.DataBind();
                    break;
                case "Edit":
                    monitoramentoForm.DefaultMode = FormViewMode.Edit;
                    ApplyAuthorizationRules();
                    break;
            }
        }
        
        protected void monitoramentoForm_ItemDeleting(object sender, FormViewDeleteEventArgs e)
        {
            Monitoramento.DeleteMonitoramento(getMonitoramento().Id);
        }
		
		#endregion
		
		#region DataSources

		protected void monitoramentoDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs e)
		{
			e.BusinessObject = getMonitoramento();
		}

		protected void idVeiculoListDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs e)
		{
			e.BusinessObject = VeiculoCollection.GetVeiculoCollection();
		}

		#endregion
		
    }
}
